
/*--------------------------------------------------------------------------

オートターンエンド修正

■概要
　暴走、行動不能、自動AIのステートになっている対象は無視してオートターンエンドが実施されるようになります。


修正内容
16/06/29　新規作成
16/07/09　1.084 7/7修正版対応
19/10/11　自動AIのステートを受けている場合もオートターンエンドの対象に含めるよう変更

■対応バージョン
　SRPG Studio Version:1.205


■規約
・利用はSRPG Studioを使ったゲームに限ります。
・商用・非商用問いません。フリーです。
・加工等、問題ありません。どんどん改造してください。
・クレジット明記無し　OK
・再配布、転載　OK
・wiki掲載　OK
・SRPG Studio利用規約は遵守してください。

--------------------------------------------------------------------------*/

(function() {




//-----------------------------
// PlayerTurnクラス
//-----------------------------
PlayerTurn._checkAutoTurnEnd= function() {
		var i, unit;
		var isTurnEnd = true;
		var list = PlayerList.getSortieList();
		var count = list.getCount();
		
		// コンフィグ画面でオートターンエンドを選択したと同時に、ターン変更が起きないようにする。
		// 戦闘で生存者が0になったと同時に、ターン終了させない意図もある。
		if (this.getCycleMode() !== PlayerTurnMode.MAP) {
			return false;
		}
		
		// オートターンが有効でない場合でも、生存者が存在しなくなった場合は、ターンを終了する
		if (count === 0) {
			TurnControl.turnEnd();
			return true;
		}
		
		if (!EnvironmentControl.isAutoTurnEnd()) {
			return false;
		}
		
		for (i = 0; i < count; i++) {
			unit = list.getData(i);
			// 待機しておらず、かつ、移動可能な（暴走、行動不能、自動AIステートになっていない）ユニットがいればオートターンエンドにならない
			if (!unit.isWait() && this._isMovable(unit)) {
				isTurnEnd = false;
			}
		}
		
		if (isTurnEnd) {
			this._isPlayerActioned = false;
			TurnControl.turnEnd();
		}
		
		return isTurnEnd;
}


// 移動可能かの判定
PlayerTurn._isMovable= function(unit) {
		if (StateControl.isBadStateOption(unit, BadStateOption.NOACTION)) {
			// ステート：行動不能なら移動不可能
			return false;
		}
		
		if (StateControl.isBadStateOption(unit, BadStateOption.BERSERK)) {
			// ステート：暴走なら移動不可能
			return false;
		}
		
		if (StateControl.isBadStateOption(unit, BadStateOption.AUTO)) {
			// ステート：自動AIなら移動不可能
			return false;
		}
		
		// それ以外は移動可能
		return true;
}


})();